//package com.fr.spark;
//
//import java.io.IOException;
//import java.io.StringReader;
//import java.util.ArrayList;
//import java.util.Collections;
//import java.util.Comparator;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//import java.util.Map.Entry;
//
//import org.apache.spark.SparkConf;
//import org.apache.spark.api.java.JavaRDD;
//import org.apache.spark.api.java.JavaSparkContext;
//import org.apache.spark.api.java.function.Function;
//import org.apache.spark.mllib.feature.Word2Vec;
//import org.apache.spark.mllib.feature.Word2VecModel;
//import org.wltea.analyzer.core.IKSegmenter;
//import org.wltea.analyzer.core.Lexeme;
//import org.wltea.analyzer.lucene.IKAnalyzer;
//
//import com.hankcs.hanlp.model.crf.CRFLexicalAnalyzer;
//
//import scala.Tuple2;
//
///**
// * @author 付荣
// * @version 创建时间：2019年6月14日 下午2:21:54
// */
//public class Word2VecTest {
//    static CRFLexicalAnalyzer ana;
//    static IKAnalyzer ik = new IKAnalyzer();
//    static Map<String, Integer> map = new HashMap<>();
//
//    public static void main(String[] args) throws IOException {
//        ana = new CRFLexicalAnalyzer();
//        SparkConf conf = new SparkConf().setMaster("local").setAppName("fr");
//        // SparkContext sc = new SparkContext(conf);
//        JavaSparkContext jsc = new JavaSparkContext(conf);
//
//        JavaRDD<List<String>> input = jsc.textFile("E:\\test\\word2vec.txt").map(new Function<String, List<String>>() {
//
//            private static final long serialVersionUID = 1L;
//
//            @Override
//            public List<String> call(String arg0) throws Exception {
//                if (arg0 == null) {
//                    return null;
//                }
//                return analyzer(arg0);
//            }
//
//        });
//        Word2Vec word2Vec = new Word2Vec();
//        word2Vec.setMinCount(1);
//        word2Vec.setNumPartitions(1);
//        word2Vec.setNumIterations(1);
//        Word2VecModel model = word2Vec.fit(input);
//        List<Entry<String, Integer>> list = new ArrayList<>(map.entrySet());
//        Collections.sort(list, new Comparator<Entry<String, Integer>>() {
//            @Override
//            public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
//                return o2.getValue() - o1.getValue();
//            }
//        });
//        for (int i = 0; i < 100; i++) {
//            String s = list.get(i).getKey();
//            Tuple2<String, Object>[] synonym = model.findSynonyms(s, 10);
//            System.out.println(s);
//            for (Tuple2<String, Object> t : synonym) {
//                System.out.println(t);
//            }
//        }
//
//        // model.save(sc,"E:\\ticket\\suggest_model.txt");
//    }
//
//    public static List<String> analyzer(String args0) throws IOException {
////        List<Term> termList = NLPTokenizer.segment(args0);
//        IKSegmenter segmenter = new IKSegmenter(new StringReader(args0) , true);
//        List<String> rs = new ArrayList<>();
//        Lexeme lexeme = segmenter.next();
//        while(lexeme != null){
//            String s = lexeme.getLexemeText();
//            Integer i = map.get(s);
//            if (i == null) {
//                i = 0;
//            }
//            i++;
//            map.put(s, i);
//            rs.add(s);
//            lexeme = segmenter.next();
//        }
//        return rs;
//        
//    }
//}
